1.1.5. Vendor 6 Observations

In summary the test event was very useful for us. From a CalDAV perspective all products are still in very early stages (IMHO). The event showed quite a few serious issues in the CalDAV layer of all products. For me this was a reason why we couldn’t do that much ‘formal’ testing. We always ran into issues to be solved quite quickly. What I basically did was:

  1. test against Vendor 2

    • initially the server ‘crashed’ (500 HTTP error) on some requests sent by us, but Simon was able to rather quickly fix this

    • we tested a bit of implicit scheduling, this worked quite well

  2. test against the VENDOR 3 LDAP<→CardDAV gateway

    • the VENDOR 3 CardDAV gateway was in its very early stages, so I worked with Mike to improve it

    • at the end of the IOP we could get/edit contacts in the server.

    • also discussed issues with cross-server CalDAV result sets, which VENDOR 3 seems to be using and which seems to break many clients (didn’t manage to test it). Cyrus suggested to use WebDAV Binds instead.

  3. test against Vendor 5

    • this server was a bit slow (requiring ~20s to update a record), but was the only one which didn’t produce 500 errors :-)

    • didn’t test that much on it, but the shallow testing I did, was OK

  4. test against Vendor 1

    • we found issues in the ‘principal discovery’, when trying to query the root of the server

    • this seems to be a rather ‘generic’ issue which produces interop issues

    • We tested implicit scheduling and found a bug in our Vendor 1 code which we fixed on site.

    • Discussed the implementation of WebDAV XMPP.

    • (BTW: Vendor 1 didn’t bring its new CardDAV server, but we successfully tested that before)

The table below shows the CALDAV testing matrix items tested by Vendor 6 against the Vendor 1 server.

1.

Event creation.

P

1.1.

Create new single-instance meeting titled “Meeting 1.1” with the location “Durham”.

P

1.2.

Create new meeting titled “Meeting 1.2” recurring every Monday from 10:00 AM to 11:00 AM for 4 weeks.

P

1.3.

Create new single-instance meeting titled “Meeting 1.3” with 2 other attendees.

P/N

1.4.

Create new single-instance meeting titled “Meeting 1.4” with an alarm set to trigger 15 minutes prior to the schedule time of the meeting.

alarm not exported, but stored locally, won’t trigger alarms in secondary folders

2.

Event modification

P

2.1.

Modify the title of meeting “Meeting 1.1” to “Meeting 1.1bis”.

P

2.2.

Modify the location of the meeting “Meeting 1.1bis” to “Seattle bis”.

P

2.3.

Reschedule meeting “Meeting 1.1bis” to the next day.

P

2.4.

Add an attendee to “Meeting 1.1bis”.

does not prompt to send an email

P

2.5.

Add an alarm to “Meeting 1.1bis”.

alarm not exported, but stored locally, won’t trigger alarms in secondary folders

N

2.6.

Modify the title of the 1st instance of the recurring meeting created in 1.2.

recurrence exceptions still unsupported

P

2.7.

Modify the participation status of the 1st attendee in meeting 1.3 to DECLINED.

Partstat panel does not show up (hm). Had to press ‘send invitations’ to make it show up. Then it worked for a Vendor 1 server external participant (plain email)

N

2.8.

Cancel the 4th instance of the recurring meeting created in 1.2.

recurrence exceptions still unsupported

P

2.9.

One client changes “Meeting 1.1bis” to a different time, second client ‘refreshes’ its display to see the modification.

Prompts the user and reminds that the reminder won’t be triggered.

3.

Event retrieval

N

3.1.

calendar-query REPORT

not used in Vendor 6

N

3.1.1.

No filtering (match everything)

not used in Vendor 6

N

3.1.1.1.

Query all components and return all data. (tests <calendar-query> and <filter>)

not used in Vendor 6

N

3.1.1.2.

Query all components and return ETag WebDAV property and all data. (tests <calendar-query>+<DAV:prop> and <filter>)

not used in Vendor 6

N

3.1.1.3.

Query all components and return just entire VEVENT components. (tests <calendar-query>, <filter>+<comp-filter>)

not used in Vendor 6

N

3.1.1.4.

Query all components and return VEVENT components with only DTSTART, DTEND/DURATION, SUMMARY, UID, SEQUENCE, RRULE, RDATE, EXRULE, EXDATE, RECURRENCE-ID. (tests <calendar-query>, <filter><comp-filter>`, `<calendar-data><comp>+<prop>)

not used in Vendor 6

N

3.1.2.

time-range filtering

not used in Vendor 6

N

3.1.2.1.

Query all components within a one day time-range and return all data. Make sure that there is a recurring event that starts prior to the chosen time-range but has one non-overridden instance within the time-range. (tests <calendar-query>, <filter>+<time-range>)

not used in Vendor 6

N

3.1.2.2.

Query all components within a one week time-range and return just entire VEVENT components. Make sure that there is a recurring event that starts prior to the chosen time-range but has one overridden instance within the time-range. (tests <calendar-query>, <filter>+<time-range>)

not used in Vendor 6

N

3.1.3.

component based filtering

not used in Vendor 6

N

3.1.3.1.

Query all components that contain an embedded VALARM component. (tests <calendar-query>, <filter>+<comp-filter>)

not used in Vendor 6

N

3.1.3.2.

Query all components that contain an embedded VALARM component whose trigger falls within a specific time-range. (tests <calendar-query>, <filter><comp-filter><prop-filter>+<time-range>)

not used in Vendor 6

N

3.1.4.

property based filtering

not used in Vendor 6

N

3.1.4.1.

Query all components that contain any ORGANIZER property. (tests <calendar-query>, <filter><prop-filter><is-defined>)

not used in Vendor 6

N

3.1.4.2.

Query all components that contain an ORGANIZER property with a specific CUA text value case-insensitively. (tests <calendar-query>, <filter><prop-filter><text-match>+<caseless>)

not used in Vendor 6

N

3.1.4.3.

Query all components that contain an ORGANIZER property with a specific CUA text value case-sensitively. (tests <calendar-query>, <filter><prop-filter><text-match>+<caseless>)

not used in Vendor 6

N

3.1.5.

parameter based filtering

not used in Vendor 6

N

3.1.5.1.

Query all components that contain a DTSTART property with a TZID parameter. (tests <calendar-query>, <filter><prop-filter><text-match><param-filter><is-defined>)

not used in Vendor 6

N

3.1.5.2.

Query all components that contain an ATTENDEE property with PARTSTAT=NEEDS-ACTION parameter. (tests <calendar-query>, <filter><prop-filter><text-match><param-filter><text-match>)

not used in Vendor 6

P

3.2.

calendar-multiget REPORT

used and works

P

3.2.1.

Query a specific href and return all data. (tests <calendar-multiget>)

P

3.2.2.

Query multiple hrefs (some of which do not exist) and return all data. (tests <calendar-multiget>)

hard to trigger in the Vendor 6 plugin, but works

P

3.2.3.

Query a specific href and return ETag WebDAV property and all data. (tests <calendar-multiget>+<DAV:prop>)

used and works

P

3.2.4.

Query multiple hrefs (some of which do not exist) and return ETag WebDAV property and all data. (tests <calendar-multiget>+<DAV:prop>)

hard to trigger in the Vendor 6 plugin, but works

N

3.2.5.

Query a specific href and return VEVENT components with only DTSTART, DTEND/DURATION, SUMMARY, UID, SEQUENCE, RRULE, RDATE, EXRULE, EXDATE, RECURRENCE-ID. (tests <calendar-query>, <calendar-data><comp><prop>)

not used in Vendor 6

N

3.2.6.

Query multiple hrefs (some of which do not exist) and return VEVENT components with only DTSTART, DTEND/DURATION, SUMMARY, UID, SEQUENCE, RRULE, RDATE, EXRULE, EXDATE, RECURRENCE-ID. (tests <calendar-query>, <calendar-data><comp><prop>)

not used in Vendor 6